/******************************************************************************
 * Copyright (C) 2015  671643387@qq.com
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 *****************************************************************************/

#include "Common.h"
#include <sstream>

char const* G_LocaleNames_[MAX_LOCALE] =
{
	"enUS", /* enGB */
	"koKR",
	"frFR",
	"deDE",
	"zhCN",
	"zhTW",
	"esES",
	"esMX",
};

bool IsAcceptableClientBuild(std::uint32_t _Build)
{
	int _AcceptedVersions[] = EXPECTED_NODE_CLIENT_BUILD;
	for (int i = 0; _AcceptedVersions[i]; ++i) {
		if (int(_Build) == _AcceptedVersions[i]) {
			return true;
		}
	}
	return false;
}

std::string AcceptableClientBuildsListStr(void)
{
    std::ostringstream _Data;
    int _AcceptedVersions[] = EXPECTED_NODE_CLIENT_BUILD;
    for (int i = 0; _AcceptedVersions[i]; ++i)
    {
        _Data << _AcceptedVersions[i] << " ";
    }
    return _Data.str();
}

LocaleNameStr const G_FullLocaleNameList_[] =
{
	{ "enUS", LOCALE_enUS },
	{ "enGB", LOCALE_enUS },
	{ "koKR", LOCALE_koKR },
	{ "frFR", LOCALE_frFR },
	{ "deDE", LOCALE_deDE },
	{ "zhCN", LOCALE_zhCN },
	{ "zhTW", LOCALE_zhTW },
	{ "esES", LOCALE_esES },
	{ "esMX", LOCALE_esMX },
	{ NULL, LOCALE_enUS }
};

LocaleConstant GetLocaleByName(const std::string& _Name)
{
    for (LocaleNameStr const* _Itr = &G_FullLocaleNameList_[0]; _Itr->Name; ++_Itr)
	{
		if (_Name == _Itr->Name) {
			return _Itr->Locale;
		}
	}
	return LOCALE_enUS;
}